//
// Created by Jisam on 14/09/2024 6:47 PM.
// Solution of  P1120 小木棍 ［数据加强版］
// 2024-09-14 19:05:55 AC 100 搜索剪枝
//#pragma GCC optimize(3)
#include <bits/stdc++.h>

using namespace std;
#define coutn(x) cout << (x) << "\n"
#define endl "\n"
#define PSI pair<string,int>
#define PII pair<int,int>
#define PDI pair<double,int>
#define PDD pair<double,double>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>
#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
#define code_by_jisam ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
typedef long long i64;
typedef unsigned u32;
typedef unsigned long long u64;
typedef __int128 i128;
int dx[] = {-1, 1, 0, 0, 1, 1, -1, -1,};
int dy[] = {0, 0, -1, 1, 1, -1, -1, 1,};
const int MAXN = 55;
int stick[MAXN], vis[MAXN];
int minn, cnt, tot, maxn;

/**
 * 深度优先搜索函数，用于寻找符合条件的数字组合
 * @param res 搜索的递归层数，用于控制搜索的深度
 * @param sum 当前已累计的数值
 * @param target 目标数值，即我们希望通过组合得到的数值
 * @param p 当前正在考虑使用的数字
 */
void dfs(int res, int sum, int target, int p) {
    // 如果搜索到最底层，直接输出目标数值并终止程序
    if (res == 0) {
        cout << target;
        exit(0);
    }
    // 如果当前累计数值等于目标数值，进行递归搜索下一层
    if (sum == target) {
        dfs(res - 1, 0, target, maxn);
        return;
    }
    // 从当前数字开始，向下搜索可以使用的数字
    for (int i = p; i >= minn; i--) {
        // 如果当前数字可用，并且加上当前累计数值后不超过目标数值
        if(stick[i] && i + sum <= target){
            stick[i] --;  // 使用该数字
            dfs(res,sum +i ,target,i);  // 递归搜索
            stick[i] ++;  // 恢复该数字的状态，以便下一次使用
            // 如果当前累计数值为0或者正好等于目标数值，则不需要继续搜索
            if(sum == 0 || sum + i == target){
                break;
            }
        }
    }
    return;
}

/**
 * 解决方案函数，用于处理输入数据，调用深度优先搜索函数寻找解
 */
void solution() {
    int n;
    cin >> n;
    minn = n;
    int temp = 0;
    // 读取并处理每个数字，更新相关统计信息
    while (n--) {
        cin >> temp;
        if (temp <= 50) {
            cnt++;
            stick[temp]++;
            tot += temp;
            maxn = max(maxn, temp);
            minn = min(minn, temp);
        }
    }
    // 尝试找到可以整除总和的数字作为目标数值，启动深度优先搜索
    for (int i = maxn; i <= temp; i++) {
        if (tot % i == 0) {
            dfs(tot / i, 0, i, maxn);
        }
    }
    coutn(tot);
}


int main() {
    code_by_jisam;
    i64 T = 1;
//    cin >> T;
    while (T--) {
        solution();
    }
    return 0;
}